#!/usr/bin/python
# -*-coding: UTF-8 -*-
"""
# Time: 2021/10/23 19:39
# @Author: 修养
# @Project_name: PROJECT_NAME
"""
name = 'BobIB'
print(f"Hello {name}, what is?")
print("小写：", name.lower())
print("大写：", name.upper())
print("首字母大写：", name.title())
print("""hello world, "I like!" """)
Str = "  \thello \nworld! "  # \t制表符 \n换行符
print(Str.strip())
print("~~~~~~~~~~~~0000~~~~~~~~~~~~~~~~~~~~~")
print(1 + 7)
print(9 - 1)
print(2 * 4)
print(int(16 / 2))
a = 3.141592653
print(f"我最喜欢的数字是：{a}")

# Unit3: 列表
names = []
if names:  # 在if条件中列表名作为表达式时，列表为空时返回False,不为空时返回：True
    print("列表为空")
else:
    print("列表不为空")
names = ['小张', '小成', '小王']
message = "how are you!"
print(message, names[0])
print(message, names[1])
print(message, names[2])
print("~~~~~~~~~~~~~~~~~~~~1111111列表元素新增、删除~~~~~~~~~~~~~~~~~~~~~~~")
print(f"{names[0]}, 无法应邀")
#  添加元素
names[0] = '小明'
print(names[0], ",你来")
names.insert(0, "小青")  # 按索引插入,必须加索引
names.append("小雪")  # 末尾追加
for name in names:
    print("hello, " + name)

#  删除元素
print("只能邀请2位！")
names.pop(0)  # 加索引，按索引删除，不加索引删除末尾
print("删除：", names.pop())  # 返回弹出的值
del names[0]  # 必传索引值
names.remove("小王")  # 只知道要删除的元素值，删除第一个指定值，必传参数

for name in names:
    print("hello, " + name)

print("~~~~~~~~~~~~~~2222222222列表元素排序~~~~~~~~~~~~~~~~~")
lists = ['Alis', 'Hag', 'Lisa', 'Begin']
lists.sort()  # 对列表永久排序，改变原列表的顺序
print("按字母顺序排序后： ", lists)
lists.reverse()  # 对列表永久排序，改变原列表的顺序
print("按字母逆序排序后： ", lists)
list = sorted(lists)  # 对列表暂时排序，未改变原列表的顺序
print("对列表暂时按字母顺序排序后： ", list)
print("源列表未改变：", lists)
print("列表长度：", len(lists))
print('源列表：', lists)
lists.reverse()
print('排序后的列表：', lists)

print("~~~~~~~~~~~333333333 列表切片~~~~~~~~~~~~~~~~")
a = [1, 2, 3, 4, 8]
print(a)
print("列表切片，输入a[1],a[2]:", a[1:3])
print("列表切片，输入前三个:", a[:3])  # 等价于 a[0:3]
print("列表切片，输入全部:", a[:])  # 等价于 a
print("列表切片，按步长为2输出:", a[0:5:2])

# Unit6:字典
print("~~~~~~~~~~444444444: 字典~~~~~~~~~~~`~~~~~~~~~")
student0 = {}  # 创建一个空字典
student0 = {'id': '0001', 'name': '陈长生', 'gender': '男'}
# 6.1、访问字典中的值
print('id为：', student0['id'])  # 类似于Java中的键值对：maps.get(”id“)
# 6.2、添加键值对
student0['age'] = 100000
print("输出字典：", student0)
# 6.3、修改字典的值
student0['age'] = 200000
print("修改后的字典：", student0)
# 6.4、删除键值对
del student0['gender']
print("删除gender键值对后字典", student0)
# 6.5 使用get访问键值对,没有这个键时会报错
print('get(name)访问值：', student0.get('name'))

print("~~~~~~~~~~~~~~555555：遍历字典~~~~~~~~~~~~~~~~~")
# 6.6 遍历字典中的所有键值对：items()返回一个键值对列表
print('student0.items()方法：', student0.items())
for k, v in student0.items():
    print("key: ", k, "\tvalue: ", v)
# 6.6 遍历字典中的所有键：keys() 返回一个列表
for k in student0.keys():
    print('键：', k)
# 6.6 遍历字典中的所有值
for v in student0.values():
    print('值：', v)

print("使用集合剔除重复项：", set(student0.values()))
print("~~~~~~~~~~~~~~~集合：~~~~~~~~~~~~~~~")
languages = {'Chinese', 'English', 'Abstain'}  # 集合：元素唯一，没有键值对，元素之间用逗号分隔

print("~~~~~~~~~~~~~~66666：嵌套：字典列表混合~~~~~~~~~~~~~~~~~")

student1 = {'id': '0001', 'name': '陈长生', 'gender': '男'}
student2 = {'id': '0002', 'name': '李靖', 'gender': '男'}
student3 = {'id': '0003', 'name': '紫霞', 'gender': 'nv'}
# 列表中存储字典
lists = []
lists = [student1, student2, student3]
for list in lists[:2]:
    print(list)
print("列表长度：", len(lists))
for student in lists[:2]:
    if student['id'] == '0001':
        student['道法'] = '仙人'
    print(student)
print("~~~~~~~~~~~~~~66666：嵌套：字典中存储列表~~~~~~~~~~~~~~~~~")
# 字典中存储列表
tools = ['回魂丹', '紫金葫芦', '天剑', '洗髓丹']
student0 = {'id': '0001', 'name': '陈长生', 'gender': '男',
            'tools': tools
            }
for k, v in student0.items():
    print(k, ":", v)

# 字典中存储字典
student1 = {'id': '0001', 'name': '陈长生', 'gender': '男'}
student2 = {'id': '0002', 'name': '李靖', 'gender': '男'}
student3 = {'id': '0003', 'name': '紫霞', 'gender': '女'}
student4 = {'id': '0004', 'name': '黄龙', 'gender': '男'}

student = {
    '仙界': student1,
    '人界': student4,
    '鸿蒙': {
        'id': '0000',
        'name': '未知'
           }
    }
for k, v in student.items():
    print(k, v)